home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / elk-2_0.lha / elk-2.0 / lib / xt / converter.c < prev    next >
C/C++ Source or Header  |  1992-10-06  |  1KB  |  51 lines

  1. #include "xt.h"
  2.  
  3. #define MAX_CONVERTER   512
  4.  
  5. typedef struct {
  6.     char *name;
  7.     int scheme_to_c;
  8.     PFX2S to_scheme;
  9.     PFS2X to_c;
  10. } CONVERTER;
  11.  
  12. static CONVERTER ctab[MAX_CONVERTER], *clast = ctab;
  13.  
  14. void Define_Converter_To_Scheme (name, c) char *name; PFX2S c; {
  15.     Error_Tag = "c->scheme";
  16.     if (clast == ctab+MAX_CONVERTER)
  17.     Primitive_Error ("too many converters");
  18.     clast->name = name;
  19.     clast->scheme_to_c = 0;
  20.     clast->to_scheme = c;
  21.     clast++;
  22. }
  23.  
  24. void Define_Converter_To_C (name, c) char *name; PFS2X c; {
  25.     Error_Tag = "scheme->c";
  26.     if (clast == ctab+MAX_CONVERTER)
  27.     Primitive_Error ("too many converters");
  28.     clast->name = name;
  29.     clast->scheme_to_c = 1;
  30.     clast->to_c = c;
  31.     clast++;
  32. }
  33.  
  34. PFX2S Find_Converter_To_Scheme (name) char *name; {
  35.     register CONVERTER *p;
  36.  
  37.     for (p = ctab; p < clast; p++)
  38.     if (!p->scheme_to_c && streq (p->name, name))
  39.         return p->to_scheme;
  40.     return 0;
  41. }
  42.  
  43. PFS2X Find_Converter_To_C (name) char *name; {
  44.     register CONVERTER *p;
  45.  
  46.     for (p = ctab; p < clast; p++)
  47.     if (p->scheme_to_c && streq (p->name, name))
  48.         return p->to_c;
  49.     return 0;
  50. }
  51.